
//1170.比较字符串最小字母出现频次
class Solution {
public:
    void f(vector<string>& nums,vector<int>& count)
    {
        int n=nums.size();
        for(int i=0;i<n;i++)
        {
            //先对该位置进行排序
            sort(nums[i].begin(),nums[i].end());   //对字符串排序
            int len=upper_bound(nums[i].begin(),nums[i].end(),nums[i][0])-nums[i].begin();   //查找字符串中最小字符出现的频次
            count[i]=len;
        }
    }


    vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) {
        int n=queries.size(),m=words.size();
        vector<int> q(n);  //存储queries中每一个位置的f(s)
        vector<int> w(m);  //存储words中每一个位置的f(s)

        f(queries,q);
        f(words,w);

        //将words中的数据进行排序
        sort(w.begin(),w.end());
        vector<int> ret(n);
        //枚举每一个q找第一个比q[i]大的位置
        for(int i=0;i<n;i++)
        {
            int len=upper_bound(w.begin(),w.end(),q[i])-w.begin();  
            ret[i]=m-len;
        }
        return ret;
    }
};